--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / contacts / ContactsPage.vue
Displaying Raw • Download
meshchatx/src/frontend/components/contacts/ContactsPage.vue d8d147581c7b04f65abccdefc1e1e623d3fcbcb1 (d8d14758) Text, 32.07 KB
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-1 min-w-0 h-full overflow-hidden bg-slate-50 dark:bg-zinc-950"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto p-4 md:p-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-w-5xl mx-auto space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-3 md:flex-row md:items-center md:justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h1 Te6edf3classTff7b72=Ta5d6ff"text-2xl font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.description"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openMyIdentityDialogTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"qrcode" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share_my_identity"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"primary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openAddDialogTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.add_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"magnify" Te6edf3classTff7b72=Ta5d6ff"size-5 text-gray-400" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3contactsSearchTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.search_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onContactsSearchInputTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-card"Tb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isLoading Tff7b72&& Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3i Tff7b72in T79c0ff8Ta5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff'skeleton-' Tff7b72+ Te6edf3iTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-2xl border border-gray-100 dark:border-zinc-800 bg-white/70 dark:bg-zinc-900/50 px-4 py-3 flex items-center gap-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-10 sm:size-12 rounded-full bg-gray-200 dark:bg-zinc-700 animate-pulse shrink-0"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0 space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"h-4 w-32 bg-gray-200 dark:bg-zinc-700 rounded animate-pulse" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"h-3 w-48 bg-gray-100 dark:bg-zinc-800 rounded animate-pulse" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isLoading Tff7b72&& Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"py-10 text-center text-gray-500 dark:text-zinc-400"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.no_contacts"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3contact Tff7b72in Te6edf3contactsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-2xl border border-gray-100 dark:border-zinc-800 bg-white/70 dark:bg-zinc-900/50 px-4 py-3 flex items-center gap-3 hover:border-blue-300 dark:hover:border-blue-700 transition-colors cursor-default"
Tb4b4b4@Te6edf3contextmenuTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3openContextMenuTb4b4b4(Te6edf3$eventTb4b4b4, Te6edf3contactTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72LxmfUserIcon
Tb4b4b4:Te6edf3custom-imageTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3custom_imageTa5d6ff"
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3contactTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3icon_name Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4:Te6edf3icon-foreground-colourTff7b72=Ta5d6ff"
Te6edf3contactTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3contactTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3foreground_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Tb4b4b4:Te6edf3icon-background-colourTff7b72=Ta5d6ff"
Te6edf3contactTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3contactTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3background_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Te6edf3icon-classTff7b72=Ta5d6ff"size-10 sm:size-12"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3contactTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono text-gray-500 dark:text-zinc-400 break-all"Tb4b4b4>
Tff7b72{{ Te6edf3contactTb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTb4b4b4.Te6edf3remote_identity_hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 rounded-lg text-gray-500 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800 hover:text-gray-700 dark:hover:text-zinc-200 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.actions'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openContextMenuTb4b4b4(Te6edf3$eventTb4b4b4, Te6edf3contactTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"dots-vertical" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hasMoreContacts Tff7b72&& Tff7b72!Te6edf3isLoadingMoreTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"pt-2 flex justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadMoreContactsTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.load_more"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isLoadingMoreTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"py-3 flex justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-6 border-2 border-blue-500/30 border-t-blue-500 rounded-full animate-spin"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Contact context menu -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3contextMenuTb4b4b4.Te6edf3visibleTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed z-[210] min-w-48 rounded-xl border border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 shadow-xl"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3topTff7b72: Ta5d6ff`Tffd700${Te6edf3contextMenuTb4b4b4.Te6edf3yTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4, Te6edf3leftTff7b72: Ta5d6ff`Tffd700${Te6edf3contextMenuTb4b4b4.Te6edf3xTffd700}Ta5d6ffpxTa5d6ff` Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"context-item" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3shareContactTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"share-variant" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"context-item" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyContactUriTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.copy_contact_uri"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"context-item text-red-600 dark:text-red-400"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeContactTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"delete-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.remove_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Add contact dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isAddDialogOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[200] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3closeAddDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-lg rounded-2xl bg-white dark:bg-zinc-900 shadow-2xl overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.add_contact"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeAddDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-5 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs uppercase tracking-wider font-semibold text-gray-500 mb-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_name_optional"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newContactNameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.contact_name_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs uppercase tracking-wider font-semibold text-gray-500 mb-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.hash_or_uri"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newContactInputTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.hash_or_uri_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3submitAddContactTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3pasteFromClipboardTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"clipboard-text-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.paste"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3cameraSupportedTa5d6ff" Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openScannerDialogTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"qrcode-scan" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.scan_qr"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-t border-gray-100 dark:border-zinc-800 flex justify-end gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeAddDialogTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3newContactInput Tff7b72|| Te6edf3isSubmittingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3submitAddContactTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isSubmitting Tff7b72? Ta5d6ff'loading' Tff7b72: Ta5d6ff'check'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-4"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin'Tff7b72: Te6edf3isSubmitting Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.add_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Scanner dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isScannerDialogOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[220] flex items-center justify-center p-4 bg-black/70 backdrop-blur-sm"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3closeScannerDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-xl rounded-2xl bg-white dark:bg-zinc-900 shadow-2xl overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.scan_qr"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeScannerDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-5 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72video
Te6edf3refTff7b72=Ta5d6ff"scannerVideo"
Te6edf3classTff7b72=Ta5d6ff"w-full rounded-xl bg-black max-h-[60vh]"
Te6edf3autoplay
Te6edf3playsinline
Te6edf3muted
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72videoTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3scannerError Tff7b72|| Te6edf3$tTb4b4b4(Ta5d6ff"contacts.scanner_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- My identity dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isMyIdentityDialogOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[200] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3isMyIdentityDialogOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-md rounded-2xl bg-white dark:bg-zinc-900 shadow-2xl overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share_my_identity"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isMyIdentityDialogOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-5 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72img
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3myQrDataUrlTa5d6ff"
Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3myQrDataUrlTa5d6ff"
Te6edf3altTff7b72=Ta5d6ff"Identity QR"
Te6edf3classTff7b72=Ta5d6ff"w-52 h-52 rounded-xl border border-gray-200 dark:border-zinc-800 bg-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono break-all text-center text-gray-600 dark:text-zinc-300"Tb4b4b4>
Tff7b72{{ Te6edf3myIdentityUri Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyToClipboardTb4b4b4(Te6edf3myIdentityUriTb4b4b4, Te6edf3$tTb4b4b4(Ta5d6ff'contacts.identity_uri_copied'Tb4b4b4)Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.copy"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"primary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3shareUriTb4b4b4(Te6edf3myIdentityUriTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"share-variant" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3QRCode Tff7b72from Ta5d6ff"qrcode"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3WebSocketConnection Tff7b72from Ta5d6ff"../../js/WebSocketConnection"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3LxmfUserIcon Tff7b72from Ta5d6ff"../LxmfUserIcon.vue"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"ContactsPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3LxmfUserIconTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3contactsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3contactsSearchTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3isLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isLoadingMoreTff7b72: Tff7b72falseTb4b4b4,
Te6edf3searchDebounceTimeoutTff7b72: Tff7b72nullTb4b4b4,
Te6edf3contactsPageSizeTff7b72: T79c0ff30Tb4b4b4,
Te6edf3contactsOffsetTff7b72: T79c0ff0Tb4b4b4,
Te6edf3totalContactsCountTff7b72: T79c0ff0Tb4b4b4,
Te6edf3configTff7b72: Tff7b72nullTb4b4b4,
Te6edf3myIdentityUriTff7b72: Tff7b72nullTb4b4b4,
Te6edf3myQrDataUrlTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isMyIdentityDialogOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isAddDialogOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isSubmittingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newContactNameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3newContactInputTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3isScannerDialogOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3scannerErrorTff7b72: Tff7b72nullTb4b4b4,
Te6edf3scannerStreamTff7b72: Tff7b72nullTb4b4b4,
Te6edf3scannerAnimationFrameTff7b72: Tff7b72nullTb4b4b4,
Te6edf3pendingLxmaImportTff7b72: Tff7b72falseTb4b4b4,
Te6edf3contextMenuTff7b72: Tb4b4b4{
Te6edf3visibleTff7b72: Tff7b72falseTb4b4b4,
Te6edf3xTff7b72: T79c0ff0Tb4b4b4,
Te6edf3yTff7b72: T79c0ff0Tb4b4b4,
Te6edf3contactTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3cameraSupportedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(
Tff7b72typeof Tffa657window Tff7b72!== Ta5d6ff"undefined" Tff7b72&&
Tff7b72typeof Tffa657windowTb4b4b4.Te6edf3BarcodeDetector Tff7b72!== Ta5d6ff"undefined" Tff7b72&&
Te6edf3navigatorTff7b72?Tb4b4b4.Te6edf3mediaDevicesTff7b72?Tb4b4b4.Te6edf3getUserMedia
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hasMoreContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72< Tff7b72thisTb4b4b4.Te6edf3totalContactsCountTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3stopScannerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeoutTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeoutTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4)Tb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3myIdentityUri Tff7b72= Tff7b72thisTb4b4b4.Te6edf3buildMyIdentityUriTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3myIdentityUriTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3myQrDataUrl Tff7b72= Tff7b72await Te6edf3QRCodeTb4b4b4.Te6edf3toDataURLTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3myIdentityUriTb4b4b4, Tb4b4b4{ Te6edf3marginTff7b72: T79c0ff1Tb4b4b4, Te6edf3scaleTff7b72: T79c0ff6 Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3buildMyIdentityUriTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3lxmf_address_hashTb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_public_keyTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6fflxma://Tffd700${Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3lxmf_address_hashTffd700}Ta5d6ff:Tffd700${Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3identity_public_keyTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff`Ta5d6fflxmf://Tffd700${Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3lxmf_address_hashTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getContactsTb4b4b4(Te6edf3append Tff7b72= Tff7b72falseTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3appendTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoadingMore Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contactsOffset Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts"Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3searchTff7b72: Tff7b72thisTb4b4b4.Te6edf3contactsSearch Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3contactsPageSizeTb4b4b4,
Te6edf3offsetTff7b72: Tff7b72thisTb4b4b4.Te6edf3contactsOffsetTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3list Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3contacts Tff7b72?? Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4) Tff7b72? Te6edf3responseTb4b4b4.Te6edf3data Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalContactsCount Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3total_count Tff7b72?? Te6edf3listTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3appendTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3contacts Tff7b72= Tb4b4b4[Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4, Tb4b4b4...Te6edf3listTb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3contacts Tff7b72= Te6edf3listTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3contactsOffset Tff7b72+= Te6edf3listTb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_load_contacts"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingMore Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3loadMoreContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isLoadingMore Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasMoreContactsTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onContactsSearchInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeoutTb4b4b4) Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeoutTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeout Tff7b72= Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff250Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openAddDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newContactName Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newContactInput Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImport Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isAddDialogOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeAddDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isAddDialogOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImport Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openMyIdentityDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isMyIdentityDialogOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3parseLxmaUriTb4b4b4(Te6edf3inputTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3normalized Tff7b72= Te6edf3inputTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3match Tff7b72= Te6edf3normalizedTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^lxma:\/\/([0-9a-f]{32}):([0-9a-f]{64}|[0-9a-f]{128})$/iTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3matchTb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3destinationHashTff7b72: Te6edf3matchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3publicKeyHexTff7b72: Te6edf3matchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3normalizedUriTff7b72: Ta5d6ff`Ta5d6fflxma://Tffd700${Te6edf3matchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff:Tffd700${Te6edf3matchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3extractDestinationHashTb4b4b4(Te6edf3inputTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Te6edf3inputTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Ta5d6ff/^[0-9a-f]{32}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4) Tff7b72return Te6edf3rawTb4b4b4;
Tff7b72const Te6edf3lxmfMatch Tff7b72= Te6edf3rawTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^lxmf:\/\/([0-9a-f]{32})$/Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmfMatchTb4b4b4) Tff7b72return Te6edf3lxmfMatchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3lxmMatch Tff7b72= Te6edf3rawTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^lxm:\/\/([0-9a-f]{32})$/Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmMatchTb4b4b4) Tff7b72return Te6edf3lxmMatchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3submitAddContactTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3newContactInput Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isSubmittingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSubmitting Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3lxmaData Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseLxmaUriTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newContactInputTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmaDataTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImport Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxm.ingest_uri"Tb4b4b4,
Te6edf3uriTff7b72: Te6edf3lxmaDataTb4b4b4.Te6edf3normalizedUriTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.importing_lxma"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3destinationHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3extractDestinationHashTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newContactInputTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.invalid_contact_input"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3existing Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/check/Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3existingTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_already_exists"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts"Tb4b4b4, Tb4b4b4{
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3newContactNameTff7b72?Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Ta5d6ff`Ta5d6ffContact Tffd700${Te6edf3destinationHashTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff8Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Te6edf3remote_identity_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Te6edf3lxmf_addressTff7b72: Te6edf3destinationHashTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_added"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeAddDialogTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_add_contact"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSubmitting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onWebsocketMessageTb4b4b4(Te6edf3messageTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3jsonTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3json Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3messageTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"lxm.ingest_uri.result" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImportTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImport Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSubmitting Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"success" Tff7b72&& Te6edf3jsonTb4b4b4.Te6edf3ingest_type Tff7b72=== Ta5d6ff"lxma_contact"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_added"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeAddDialogTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"error"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_add_contact"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3removeContactTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3contactTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657windowTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.remove_contact_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/Tffd700${Te6edf3contactTb4b4b4.Te6edf3idTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_removed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_remove_contact"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openContextMenuTb4b4b4(Te6edf3eventTb4b4b4, Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3visible Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3contact Tff7b72= Te6edf3contactTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3x Tff7b72= Te6edf3eventTb4b4b4.Te6edf3clientXTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3y Tff7b72= Te6edf3eventTb4b4b4.Te6edf3clientYTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeContextMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3visible Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3contact Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchContactLxmaUriTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3destinationHash Tff7b72= Tb4b4b4(Te6edf3contactTff7b72?Tb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTff7b72?Tb4b4b4.Te6edf3remote_identity_hash Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Ta5d6ff/^[0-9a-f]{32}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/announces"Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Te6edf3limitTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3announce Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3announcesTff7b72?Tb4b4b4.Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3publicKeyBase64 Tff7b72= Te6edf3announceTff7b72?Tb4b4b4.Te6edf3identity_public_keyTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3publicKeyBase64Tb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3binary Tff7b72= Te6edf3atobTb4b4b4(Te6edf3publicKeyBase64Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3publicKeyHex Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3binaryTb4b4b4)
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3charCodeAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4.Te6edf3toStringTb4b4b4(T79c0ff16Tb4b4b4)Tb4b4b4.Te6edf3padStartTb4b4b4(T79c0ff2Tb4b4b4, Ta5d6ff"0"Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3publicKeyHexTb4b4b4.Te6edf3length Tff7b72!== T79c0ff128Tb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72return Ta5d6ff`Ta5d6fflxma://Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Te6edf3publicKeyHexTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyContactUriTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lxmaUri Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchContactLxmaUriTb4b4b4(Te6edf3contactTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmaUriTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3copyToClipboardTb4b4b4(Te6edf3lxmaUriTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_uri_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3destinationHash Tff7b72= Te6edf3contactTff7b72?Tb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTff7b72?Tb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3copyToClipboardTb4b4b4(Ta5d6ff`Ta5d6fflxmf://Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff`Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_uri_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_build_contact_uri"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3shareContactTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lxmaUri Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchContactLxmaUriTb4b4b4(Te6edf3contactTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3destinationHash Tff7b72= Te6edf3contactTff7b72?Tb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTff7b72?Tb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72const Te6edf3fallback Tff7b72= Te6edf3destinationHash Tff7b72? Ta5d6ff`Ta5d6fflxmf://Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff` Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3uri Tff7b72= Te6edf3lxmaUri Tff7b72|| Te6edf3fallbackTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3uriTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_build_contact_uri"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3shareUriTb4b4b4(Te6edf3uriTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3shareUriTb4b4b4(Te6edf3uriTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3navigatorTb4b4b4.Te6edf3shareTb4b4b4) Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3shareTb4b4b4(Tb4b4b4{
Te6edf3titleTff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share"Tb4b4b4)Tb4b4b4,
Te6edf3textTff7b72: Te6edf3uriTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// ignore and fallback to clipboard
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3copyToClipboardTb4b4b4(Te6edf3uriTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_uri_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyToClipboardTb4b4b4(Te6edf3valueTb4b4b4, Te6edf3successMessageTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3successMessage Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.failed_to_copy"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3pasteFromClipboardTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newContactInput Tff7b72= Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3readTextTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_read_clipboard"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3openScannerDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isScannerDialogOpen Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scannerError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3startScannerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3startScannerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3cameraSupportedTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.camera_not_supported"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3stream Tff7b72= Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3mediaDevicesTb4b4b4.Te6edf3getUserMediaTb4b4b4(Tb4b4b4{
Te6edf3videoTff7b72: Tb4b4b4{ Te6edf3facingModeTff7b72: Ta5d6ff"environment" Tb4b4b4}Tb4b4b4,
Te6edf3audioTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scannerStream Tff7b72= Te6edf3streamTb4b4b4;
Tff7b72const Te6edf3video Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3scannerVideoTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3videoTb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3videoTb4b4b4.Te6edf3srcObject Tff7b72= Te6edf3streamTb4b4b4;
Tff7b72await Te6edf3videoTb4b4b4.Te6edf3playTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3detectQrLoopTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerError Tff7b72= Te6edf3eTb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.camera_failed"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3detectQrLoopTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isScannerDialogOpenTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3video Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3scannerVideoTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3video Tff7b72|| Te6edf3videoTb4b4b4.Te6edf3readyState Tff7b72< T79c0ff2Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrame Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3detectQrLoopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3detector Tff7b72= Tff7b72new Tffa657windowTb4b4b4.Te6edf3BarcodeDetectorTb4b4b4(Tb4b4b4{ Te6edf3formatsTff7b72: Tb4b4b4[Ta5d6ff"qr_code"Tb4b4b4] Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3detector
Tb4b4b4.Te6edf3detectTb4b4b4(Te6edf3videoTb4b4b4)
Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Te6edf3barcodesTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3qr Tff7b72= Te6edf3barcodesTff7b72?Tb4b4b4.Tb4b4b4[T79c0ff0Tb4b4b4]Tff7b72?Tb4b4b4.Te6edf3rawValueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3qrTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newContactInput Tff7b72= Te6edf3qrTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeScannerDialogTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.qr_scanned"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrame Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3detectQrLoopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrame Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3detectQrLoopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3stopScannerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrameTb4b4b4) Tb4b4b4{
Te6edf3cancelAnimationFrameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrameTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrame Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3scannerStreamTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerStreamTb4b4b4.Te6edf3getTracksTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3trackTb4b4b4) Tb4b4b4=> Te6edf3trackTb4b4b4.Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scannerStream Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3closeScannerDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isScannerDialogOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3stopScannerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4.T56d364glass-card Tb4b4b4{
@apply bg-white/95 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff85 Te6edf3backdrop-blur Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-800 Te6edf3rounded-2xl Te6edf3shadow-sm Te6edf3p-4Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364input-field Tb4b4b4{
@apply bg-gray-50/90 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff80 Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-700 Tff7b72textTff7b72-Te6edf3sm Te6edf3rounded-xl Te6edf3focusTff7b72:Te6edf3ring-2 Te6edf3focusTff7b72:Te6edf3ring-blue-400 Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-400 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Te6edf3ring-blue-500 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-500 Tff7b72block Te6edf3w-full Te6edf3p-2T79c0ff.5 Tff7b72textTff7b72-Tff7b72grayT79c0ff-900 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72grayT79c0ff-100 Tff7b72transitionTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364primary-chip Tb4b4b4{
@apply inline-flex items-center gap-1 rounded-xl bg-blue-600 Te6edf3hoverTb4b4b4:Te6edf3bg-blue-700 Tff7b72textTff7b72-Tff7b72white Te6edf3px-3 Te6edf3py-2 Tff7b72textTff7b72-Te6edf3xs Tff7b72fontTff7b72-Te6edf3semibold Tff7b72transition Te6edf3disabledTff7b72:Tff7b72opacityT79c0ff-60Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364secondary-chip Tb4b4b4{
@apply inline-flex items-center gap-1 rounded-xl bg-gray-100 Te6edf3hoverTb4b4b4:Te6edf3bg-gray-200 Te6edf3darkTff7b72:Te6edf3bg-zinc-800 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bg-zinc-700 Tff7b72textTff7b72-Tff7b72grayT79c0ff-700 Te6edf3darkTff7b72:Tff7b72textTff7b72-Te6edf3zinc-200 Te6edf3px-3 Te6edf3py-2 Tff7b72textTff7b72-Te6edf3xs Tff7b72fontTff7b72-Te6edf3semibold Tff7b72transitionTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364context-item Tb4b4b4{
@apply w-full text-left px-3 py-2 text-sm text-gray-700 Te6edf3darkTb4b4b4:Tff7b72textTff7b72-Te6edf3zinc-200 Te6edf3hoverTff7b72:Te6edf3bg-gray-100 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bg-zinc-800 Tff7b72flex Te6edf3items-center Tff7b72gapT79c0ff-2Tb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────